{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from numpy import genfromtxt\n",
    "import matplotlib.pyplot as plt\n",
    "from mpl_toolkits.mplot3d import Axes3D"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "#读入数据\n",
    "data = genfromtxt(\"delivery.csv\",delimiter = \",\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[100.   4.]\n",
      " [ 50.   3.]\n",
      " [100.   4.]\n",
      " [100.   2.]\n",
      " [ 50.   2.]\n",
      " [ 80.   2.]\n",
      " [ 75.   3.]\n",
      " [ 65.   4.]\n",
      " [ 90.   3.]\n",
      " [ 90.   2.]]\n",
      "[9.3 4.8 8.9 6.5 4.2 6.2 7.4 6.  7.6 6.1]\n"
     ]
    }
   ],
   "source": [
    "#切分数据\n",
    "x_data = data[:,:-1]\n",
    "y_data = data[:,-1]\n",
    "print(x_data)\n",
    "print(y_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "#学习率learning rate\n",
    "lr = 0.0001\n",
    "#参数\n",
    "theta0 = 0\n",
    "theta1 = 0\n",
    "theta2 = 0\n",
    "#最大迭代数\n",
    "epochs = 1000\n",
    "\n",
    "#最小二乘法\n",
    "def cost_function(theta0,theta1,theta2,x_data,y_data):\n",
    "    totalError = 0\n",
    "    for i in range(0,len(x_data)):\n",
    "        totalError += (y_data[i]-(theta0 + theta1*x_data[i,0] + theta2*x_data[i,1]))**2\n",
    "    return totalError/float(len(x_data))/2\n",
    "\n",
    "#梯度下降法\n",
    "def gradient_descent_method(x_data,y_data,theta0,theta1,theta2,lr,epochs):\n",
    "    #计算总数据量\n",
    "    m = float(len(x_data))\n",
    "    #循环epochs次\n",
    "    for i in range(epochs):\n",
    "        theta0_grad = 0\n",
    "        theta1_grad = 0\n",
    "        theta2_grad = 0\n",
    "        for j in range(0,len(x_data)):\n",
    "            theta0_grad += (1/m)*((theta0 + theta1*x_data[j,0] + theta2*x_data[j,1]) - y_data[j])\n",
    "            theta1_grad += (1/m)*((theta0 + theta1*x_data[j,0] + theta2*x_data[j,1]) - y_data[j])*x_data[j,0]\n",
    "            theta2_grad += (1/m)*((theta0 + theta1*x_data[j,0] + theta2*x_data[j,1]) - y_data[j])*x_data[j,1]\n",
    "        #更新参数\n",
    "        theta0 = theta0 - (lr*theta0_grad)\n",
    "        theta1 = theta1 - (lr*theta1_grad)\n",
    "        theta2 = theta2 - (lr*theta2_grad)\n",
    "    return theta0,theta1,theta2\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Starting theta0 =0,theta1 = 0,theta2 = 0, cost = 23.639999999999997\n",
      "After1000 iterations theta0 =0.006971416196678633,theta1 = 0.08021042690771771,theta2 = 0.07611036240566814, cost = 0.3865635716109059\n"
     ]
    }
   ],
   "source": [
    "print(\"Starting theta0 ={0},theta1 = {1},theta2 = {2}, cost = {3}\".\n",
    "         format(theta0,theta1,theta2,cost_function(theta0,theta1,theta2,x_data,y_data)))\n",
    "theta0,theta1,theta2 = gradient_descent_method(x_data,y_data,theta0,theta1,theta2,lr,epochs)\n",
    "print(\"After{0} iterations theta0 ={1},theta1 = {2},theta2 = {3}, cost = {4}\".\n",
    "         format(epochs,theta0,theta1,theta2,cost_function(theta0,theta1,theta2,x_data,y_data)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "ax = plt.figure().add_subplot(111,projection = '3d')\n",
    "ax.scatter(x_data[:,0],x_data[:,1],y_data,c = 'r', marker = 'o', s = 100 )\n",
    "x0 = x_data[:,0]\n",
    "x1 = x_data[:,1]\n",
    "#生成网格矩阵\n",
    "x0 ,x1 = np.meshgrid(x0,x1)\n",
    "z = theta0 + theta1*x0 + theta2*x1\n",
    "# 画3d图\n",
    "ax.plot_surface(x0,x1,z)\n",
    "#设置坐标轴\n",
    "ax.set_xlabel('x')\n",
    "ax.set_ylabel('y')\n",
    "ax.set_zlabel('z')\n",
    "#显示图像\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 可以利用cmd进行3D图的查看\n",
    "# 打开anaconda 的cmd \n",
    "# 然后输入路径H:    ，再转到cd H:\\code\\python\\Machine Learning\\Regression\n",
    "#         最后python 多元线性回归-checkpoint.py 运行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#sklearn调用多元线性回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from numpy import genfromtxt\n",
    "from sklearn import linear_model\n",
    "import matplotlib.pyplot as plt\n",
    "from mpl_toolkits.mplot3d import Axes3D"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[100.    4.    9.3]\n",
      " [ 50.    3.    4.8]\n",
      " [100.    4.    8.9]\n",
      " [100.    2.    6.5]\n",
      " [ 50.    2.    4.2]\n",
      " [ 80.    2.    6.2]\n",
      " [ 75.    3.    7.4]\n",
      " [ 65.    4.    6. ]\n",
      " [ 90.    3.    7.6]\n",
      " [ 90.    2.    6.1]]\n"
     ]
    }
   ],
   "source": [
    "#读入数据\n",
    "data = genfromtxt(\"delivery.csv\",delimiter = ',')\n",
    "print(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[100.   4.]\n",
      " [ 50.   3.]\n",
      " [100.   4.]\n",
      " [100.   2.]\n",
      " [ 50.   2.]\n",
      " [ 80.   2.]\n",
      " [ 75.   3.]\n",
      " [ 65.   4.]\n",
      " [ 90.   3.]\n",
      " [ 90.   2.]]\n",
      "[9.3 4.8 8.9 6.5 4.2 6.2 7.4 6.  7.6 6.1]\n"
     ]
    }
   ],
   "source": [
    "#切分数据\n",
    "x_data = data[:,:-1]\n",
    "y_data = data[:,-1]\n",
    "print(x_data)\n",
    "print(y_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#创建模型\n",
    "model = linear_model.LinearRegression()\n",
    "model.fit(x_data,y_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "coefficients: [0.0611346  0.92342537]\n",
      "intercept: -0.8687014667817126\n",
      "predict: [9.06072908]\n"
     ]
    }
   ],
   "source": [
    "#系数\n",
    "print(\"coefficients:\",model.coef_)\n",
    "\n",
    "#截距\n",
    "print(\"intercept:\",model.intercept_)\n",
    "\n",
    "#测试\n",
    "x_test = [[102,4]]\n",
    "predict = model.predict(x_test)\n",
    "print(\"predict:\",predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "ax = plt.figure().add_subplot(111,projection = '3d')\n",
    "ax.scatter(x_data[:,0],x_data[:,1],y_data, c = 'r', marker = 'o', s = 100)\n",
    "x0 = x_data[:,0]\n",
    "x1 = x_data[:,1]\n",
    "\n",
    "#生成网络矩阵\n",
    "x0 ,x1 = np.meshgrid(x0,x1)\n",
    "\n",
    "z = model.intercept_ + x0 * model.coef_[0] + x1 * model.coef_[1]\n",
    "\n",
    "#画3D图\n",
    "ax.plot_surface(x0,x1,z)\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
